<template>
  <div class="import">
    <el-card>
      <h3>员工导入</h3>
      <el-alert
        show-icon
        title="每次导入仅可添加1000名员工，姓名、手机、入职时间、聘用形式为必填项"
        type="warning"
      >
      </el-alert>
      <uploadexcel
        :beforeUpload="beforeUpload"
        :onSuccess="onSuccess"
      ></uploadexcel>
    </el-card>
  </div>
</template>

<script>
import { userBatchApi } from '@/api/employees'
export default {
  methods: {
    beforeUpload (file) {
      // 判断文件的大小
      // 补充： B   KB   MB  GB  TB
      // 1TB = 1024GB  1GB = 1024MB  1MB = 1024KB 1KB = 1024B
      const less2M = file.size / 1024 / 1024 < 2
      if (!less2M) {
        this.$message.error('对不起，文件的大小于不能超过 2M')
      }
      return less2M
    },
    // 转换日期的方法
    formatDate (days) {
      // 得到天数距离产生的日期（这个日期会晚 70 年）
      var time = new Date((days - 1) * 24 * 60 * 60 * 1000 + 1)
      // 将 time 的年份取出 减掉 70
      time.setYear(time.getFullYear() - 70)
      // 返回时间
      return time
    },
    async onSuccess ({ results }) {
      // 将中文的属性改为英文
      var obj = {
        入职日期: 'timeOfEntry',
        姓名: 'username',
        工号: 'workNumber',
        手机号: 'mobile',
        转正日期: 'correctionTime'
      }
      // 遍历数据源生成英文的列表
      const newArr = results.map(item => {
        var newObj = {}
        // 得到当前 item 中所有的 keys
        Object.keys(item).forEach(subitem => {
          // 判断属性是否为入职时间 || 转正时间
          if (obj[subitem] === 'timeOfEntry' || obj[subitem] === 'correctionTime') {
            newObj[obj[subitem]] = this.formatDate(item[subitem])
          } else {
            newObj[obj[subitem]] = item[subitem]
          }
        })
        return newObj
      })
      // console.log(newArr)
      // 将数据提交到服务器
      await userBatchApi(newArr)
      // 提示成功
      this.$message.success('批量导入数据成功')
      // 跳转到员工列表
      this.$router.push('/employees')
    }
  }
}
</script>

<style lang="scss" scoped>
.import {
  padding: 40px;
  h3 {
    text-align: center;
  }
}
</style>
